'use strict';

const blackList = [
    'loginAdmin'
];

module.exports = _ => {
    return async(ctx, next) => {
        const { url } = ctx.request;
        // 过滤params
        let url_split = url.split('/')[1];
        // 过滤query
        url_split = url_split.split('?')[0];
        // 判断是否黑名单
        if (blackList.indexOf(url_split) !== -1) {
            // 用获取的user_id判断是否管理员
            let { user_id } = ctx.token || {};
            if (!user_id) {
                // 如果没登录则执行一下登录操作
                const { account, password } = ctx.request.body;
                // 执行登录服务
                const { status, user_id: id } = await ctx.service.mivaAccount.login({ phone: account, password: ctx.app.md5(password) });
                if (status !== 200) {
                    return ctx.returnBody(404, `${url_split === 'loginAdmin' ? '用户不存在或密码错误' : '用户未登录'}`);
                }
                user_id = id;
            }
            const result_admin = await ctx.app.mysql.get('user_admin', { user_id });
            if (result_admin === null) {
                return ctx.returnBody(403, `用户权限不足`);
            }
        }

        await next();
    };
}
;
